package com.zjj.lbw.algorithm.sort;

import java.util.Arrays;

/**
 * @author zhanglei.zjj
 * @description 插入排序
 * @date 2023/3/25 16:43
 */
public class InsertionSort {
    public static void main(String[] args) {
        int[] unsortedArr = new int[]{4, 2, 28, 33, 12, 1};
        insertionSort(unsortedArr);
    }
    static void insertionSort(int[] arr) {
        System.out.println("排序前元素顺序：" + Arrays.toString(arr));

        // 已排序位置
        int sortedIndex;
        for (int i = 0; i < arr.length -1; i++) {
            // 已排序元素
            sortedIndex = i;
            int toBeSortedVal = arr[sortedIndex + 1];

            int insertIndex = sortedIndex;
            while (insertIndex >=0 && toBeSortedVal < arr[insertIndex]) {
                // 元素右移一位
                arr[insertIndex + 1] = arr[insertIndex];
                insertIndex --;
            }

            // 找到插入位置后
            arr[insertIndex + 1] = toBeSortedVal;
        }
        System.out.println("升序排序后的元素顺序为：" + Arrays.toString(arr));
    }
}
